package com.xjh.basestudy.designmode.behaviorMode.behaviorMode1_TemplateMethod.p3_projectManagement;

/**
 * @Author XuJianHua
 * @Date 2022/9/26 23:17
 * @Description
 *
 * 当然，对于基类模板中的步骤方法并不是必须要用抽象方法，而是完全可以用实体方法去实现一些通用的操作。
 * 如果子类需要个性化就对其进行重写变更，不需要就直接继承。做软件设计切勿生搬硬套、照本宣科，能够根据具体场景进行适当的变通，才是对设计模式更灵活、更恰当的运用。
 * 理解：继承父类的普通方法，直接就可以使用父类的方法，实现抽象方法是需要重写的
 */
public class Client {
    public static void main(String[] args) {
        PM pm = new HRProject();
        pm.kickoff();
      /*输出
         分析师：需求分析……
         架构师：程序设计……
         开  发：写代码……
         测  试：发现bug……
         开  发：修复bug……
         测  试：发现bug……
         开  发：修复bug……
         测  试：用例通过……
         管理员：上线发布……
         ====================最终产品====================
         修复（修复（开发（设计（人力资源管理系统需求））））
         ================================================
       */

        pm = new APIProject();
        pm.kickoff();
        /*输出
         * 24.          开  发：了解需求……
         * 25.          开  发：调研微服务框架……
         * 26.          开  发：业务代码修改及开发……
         * 27.          平  台：自动化单元测试、集成测试……
         * 28.          开  发：业务代码修改及开发……
         * 29.          平  台：自动化单元测试、集成测试……
         * 30.          开  发：发布至云服务平台……
         * 31.          ====================最终产品====================
         * 32.          开发（开发（设计（市场占比统计报表API）））
         * 33.          ================================================
         * 34.        */
    }
}